package models

import (
	"time"

	"gorm.io/gorm"
)

// Page 页面模型
type Page struct {
	ID           int            `json:"id" gorm:"primaryKey;autoIncrement"`
	Code         string         `json:"code" gorm:"type:varchar(50);uniqueIndex;not null;comment:页面代码"`
	Name         string         `json:"name" gorm:"type:varchar(100);not null;comment:页面名称"`
	Description  *string        `json:"description" gorm:"type:text;comment:页面描述"`
	DisplayOrder int            `json:"display_order" gorm:"default:0;index;comment:显示顺序"`
	Status       int            `json:"status" gorm:"default:1;index;comment:状态 1-启用 0-禁用"`
	CreatedAt    time.Time      `json:"created_at"`
	UpdatedAt    time.Time      `json:"updated_at"`
	DeletedAt    gorm.DeletedAt `json:"-" gorm:"index;comment:软删除时间戳"`

	// 关联关系 - 多对多
	Categories []Category `json:"categories,omitempty" gorm:"many2many:page_categories;"`
}

// TableName 指定表名
func (Page) TableName() string {
	return "pages"
}

// BeforeCreate GORM钩子 - 创建前
func (p *Page) BeforeCreate(tx *gorm.DB) error {
	// 可以在这里添加创建前的逻辑
	return nil
}

// BeforeUpdate GORM钩子 - 更新前
func (p *Page) BeforeUpdate(tx *gorm.DB) error {
	// 可以在这里添加更新前的逻辑
	return nil
}
